package routers

import (
	api "easycharts/api/v1"
	"easycharts/middleware"
	"easycharts/utils"
	"fmt"
	"io/ioutil"
	"os"

	"github.com/gin-gonic/gin"
)

func SetupRouter() *gin.Engine {
	r := gin.New()
	// 配置跨域相关，这里全部接受
	r.Use(middleware.Cors())

	// 加载前端页面
	r.LoadHTMLGlob("static/index.html")
	r.Static("assets", "static//assets")
	r.StaticFile("favicon.ico", "static/favicon.ico")

	// 负责响应前端页面
	r.GET("/", func(c *gin.Context) {
		c.HTML(200, "index.html", nil)
	})

	// 为前端提供api接口
	// 根据请求执行相应的处理函数
	router := r.Group("api/v1")
	{
		// 
		// POST
		//
		// 你的接口可以定义在这里
		router.POST("input/discuss", api.InputDiscuss)
		// 用户分享评论
		router.POST("input/post", api.InputPost)
		// 用户注册
		router.POST("input/user", api.InputUser)


		//
		// GET
		// 
		// 示例
		router.GET("input/discuss", api.InputDiscuss)
		// 获取
		router.GET("query/tags", api.GetTagList)
		// 获取所有实例
		router.GET("query/demos", api.GetDemoList)

		

		// asset server
		// 图片微服务
		router.GET("query/img", func(c *gin.Context) {
			// path := c.Request.URL.Path
			path := "./micro_server/uploaded/"+ c.Query("url")
			fmt.Println(path)
			file, err := os.Open(path)
			if err != nil {
				fmt.Println("file not found")
			} else {
				data, _ := ioutil.ReadAll(file)
				// c.File(file)
				c.Writer.WriteString(string(data))
				// c.JSON(http.StatusOK, data)
			}
			defer file.Close()

		})


		// // 录入员工
		// router.POST("input/worker", api.InputWorker)
		// // 查询员工
		// router.GET("query/worker", api.QueryWorker)

		// // 通用基本信息获取操作
		// // 获取线路列表
		// router.GET("query/route_list", api.GetRouteList)
		// // 获取公司列表
		// router.GET("query/company_list", api.GetCompanyList)
		// // 获取车队列表
		// router.GET("query/team_list", api.GetTeamList)
		// // 获取违章类型列表
		// router.GET("query/vioclass", api.GetVioclass)

		// // 录入相关操作
		// // 录入司机
		// router.POST("input/driver", api.InputDriver)
		// // 录入汽车
		// router.POST("input/bus", api.InputBus)
		// // 录入违章
		// router.POST("input/violation", api.InputViolation)

		// // 管理员登录
		// router.POST("login", api.Login)

		// // 查询相关
		// // 查询司机
		// router.GET("query/driver_info", api.QueryDriverInfo)
		// // 查询车队中的司机
		// router.GET("query/team_drivers", api.QueryTeamDrivers)
		// // 查询司机的违章
		// router.GET("query/driver_violation", api.QueryDriverViolation)
		// // 查询车队的违章
		// router.GET("query/team_violation", api.QueryTeamViolation)
	}

	return r
}

func InitRouter()  {
	gin.SetMode(utils.AppMode)
	r := SetupRouter()

	// 服务器启动
	r.Run(utils.HttpPort)
}
